package com.droid.users.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.droid.gastos.facade.GastoFacade;
import com.droid.persistor.dao.Gasto;
import com.droid.persistor.dao.Recordatorio;
import com.droid.persistor.dao.Usuario;
import com.droid.persistor.facade.PersistorFacade;
import com.droid.users.facade.UsuarioFacade;
import com.droid.users.util.XPDroidConstants;

public class RecordatorioServlet extends HttpServlet {

	protected void processRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();

		String operation, mensaje = null;
		String nombregasto, perioricidad, fechaalta, nombrecategoria, monto, mail, msgprogramado, fechaprog;
		Number idgasto;
		PersistorFacade facade = new PersistorFacade();
		PersistorFacade pFacade = new PersistorFacade();

		operation = request.getParameter(XPDroidConstants.PARAMETRO_OPERACION);
		switch (operation) {
		case XPDroidConstants.OPERATION_ALTA_RECORDATORIO:
			nombregasto = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBREGASTO);
			perioricidad = request
					.getParameter(XPDroidConstants.PARAMETRO_PERIORICIDAD);
			fechaalta = request
					.getParameter(XPDroidConstants.PARAMETRO_FECHAALTA);
			nombrecategoria = request
					.getParameter(XPDroidConstants.PARAMETRO_NCATEGORIA);
			monto = request.getParameter(XPDroidConstants.PARAMETRO_MONTO);
			mail = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);

	//		mensaje = facade.altaManualGasto(nombregasto, perioricidad,
		//			fechaalta, nombrecategoria, monto, mail);

			out.append(mensaje);
			break;
		case XPDroidConstants.OPERATION_BAJA_RECORDATORIO:
			idgasto = Integer.parseInt(request
					.getParameter(XPDroidConstants.PARAMETRO_IDGASTO));
//			mensaje = facade.bajaGasto(idgasto);
			out.append(mensaje);

			break;
		case XPDroidConstants.OPERATION_MODIFICAR_RECORDATORIO:
			nombregasto = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBREGASTO);
			perioricidad = request
					.getParameter(XPDroidConstants.PARAMETRO_PERIORICIDAD);
			fechaalta = request
					.getParameter(XPDroidConstants.PARAMETRO_FECHAALTA);
			nombrecategoria = request
					.getParameter(XPDroidConstants.PARAMETRO_NCATEGORIA);
			monto = request.getParameter(XPDroidConstants.PARAMETRO_MONTO);
			mail = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);
			idgasto = Integer.parseInt(request
					.getParameter(XPDroidConstants.PARAMETRO_IDGASTO));

			//mensaje = facade.modificaManualGasto(nombregasto, perioricidad,
				//	fechaalta, nombrecategoria, monto, mail, idgasto);

			out.append(mensaje);

			break;

		case XPDroidConstants.OPERATION_LISTAR_RECORDATORIOS:
			mail = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);
			//ArrayList<Gasto> resp = pFacade.obtenerUsuarioGastos(mail);

			Usuario usu = facade.obtenerUsuario(mail);

			ArrayList<Recordatorio> resp = pFacade.getRecordatoriosUsuario(usu.getIdUsuario());

			String xml = " ";
			response.setContentType("text/xml;charset=UTF-8");
			PrintWriter writer = response.getWriter();
			writer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
			writer.append("<lista_recordatorios>");
			writer.append("<usuario>");
			writer.append("<mail>").append(mail).append("</mail>");
			writer.append("</usuario>");

			for (int i = 0; i < resp.size(); i++) {
				writer.append("<recordatorios>");
				writer.append("<mensaje>").append(resp.get(i).getMensaje())
						.append("</mensaje>");
				writer.append("<fecha>").append(resp.get(i).getFecha())
						.append("</fecha>");
				writer.append("<estado>")
						.append(resp.get(i).getEstado().toString())
						.append("</estado>");
				writer.append("</recordatorios>");
			}

			writer.append("</lista_recordatorios>");
			writer.write(xml);

			break;
		default:

			break;

		}
	}

	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		processRequest(request, response);

	}

	@Override
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}
